#ifndef HASH_TABLE_H
#define HASH_TABLE_H

#include "../../lib/common.h"

#define MAX_SIZE 100

typedef struct
{
  int key;
  char *value;
} Pair; // 键是整数、值是字符串的一组键值对

typedef struct
{
  Pair *buckets[MAX_SIZE]; // 桶的数组，存储键值对的数组
} HashTable;

typedef struct 
{
  void *items;
  int length;
} List; // 用于处理获取键、值、键值对操作

int hash_func(const int key); // 哈希函数
HashTable *init_hash_table(void); // 初始化空哈希表
void append_pair(HashTable *table, const int k, const char *val); // 添加键值对
void remove_pair(HashTable *table, const int k); // 删除键值对
char *get_value(const HashTable *table, const int k); // 通过键获取值
List *get_keys(HashTable *table); // 获取所有键
List *get_values(HashTable *table); // 获取所有值
void print_hash_table(const HashTable *table); // 打印
void destory_list(List *list); // 销毁List
void destory_hash_table(HashTable *table); // 销毁哈希表

#endif